#ifndef __SEQ_QUEUE_H__
#define __SEQ_QUEUE_H__
#include <stddef.h>
typedef struct seq_queue_t {
  void *data;
  size_t front;
  size_t back;
  size_t size;
  size_t capacity;
} Queue;

int queue_init(Queue **qu, size_t size, size_t capacity);

int queue_empty(const Queue *qu);
int queue_full(const Queue *qu);

size_t queue_nmemb(const Queue *qu);

void *queue_front(const Queue *qu);

void *queue_back(const Queue *qu);

int queue_push(Queue *qu, void *data);

int queue_pop(Queue *qu);

void queue_destroy(Queue **qu);

#endif // !__SEQ_QUEUE_H__
